iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
0

其實電腦裡不只有CPU,還有controller,而controller會幫忙做一些搬移的動作,所以這個CPU只需下指令給controller,讓controller進行搬移的動作,因為這個指令是interrupt,所以下完指令之後,controller就開始搬,在搬的過程中CPU不用進行任何監控,等controller全部搬完之後,再去通知CPU,然後CPU可以直接去access,所以device會signal一個interrupt,之後就會打斷CPU,讓CPU直接去access。
https://ithelp.ithome.com.tw/upload/images/20181007/201119394K3guuawdJ.jpg
Program A因為要做I/O,例如:printf,在printf之後,它會在那邊等待output或input執行完畢,才能執行下一個instruction,所以program A issue完I/O之後,其實它是停留在那邊的,那CPU要做什麼?CPU就可以切換到另一個program B,當interrupt進來的時候,CPU就知道原先的program A I/O執行完了,這時候CPU就會中斷執行中的program B,回到program A,之後要執行program A還是program B,就要看CPU的scheduling決定了。

這邊interrupt有一個handler的動作,要去make sure剛剛I/O的動作做完,把program A重新啟動或把它的status改成可以被執行的狀態。

通常OS的設計是會在interrupt handler結束後,繼續執行program B,或者program A是一個比較重要的程式,I/O終於完成了,它的priority比較高,那program A就立刻開始執行。


上一篇
第四天 Interrupt-1
下一篇
第六天 Interrupt-3
系列文
30天~作業系統學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言